import os
import datetime

class Logger:
    """
    一个简单的日志记录类，支持不同级别的日志记录，并将日志保存到文件。
    """

    def __init__(self, name, log_file='app.log'):
        """
        初始化日志记录器。

        :param name: 日志记录器的名称
        :param log_file: 日志文件的路径
        """
        self.name = name
        self.log_file = log_file
        self._ensure_log_file_exists()

    def _ensure_log_file_exists(self):
        """
        确保日志文件存在，如果不存在则创建。
        """
        if not os.path.exists(self.log_file):
            with open(self.log_file, 'w', encoding='utf-8') as f:
                f.write('')

    def debug(self, message):
        """
        记录调试信息。

        :param message: 调试信息
        """
        self._log('DEBUG', message)

    def info(self, message):
        """
        记录一般信息。

        :param message: 一般信息
        """
        self._log('INFO', message)

    def warning(self, message):
        """
        记录警告信息。

        :param message: 警告信息
        """
        self._log('WARNING', message)

    def error(self, message):
        """
        记录错误信息。

        :param message: 错误信息
        """
        self._log('ERROR', message)

    def _log(self, level, message):
        """
        内部方法，用于实际记录日志信息。

        :param level: 日志级别
        :param message: 日志消息
        """
        prefix = {
            'DEBUG': '[DEBUG]',
            'INFO': '[INFO]',
            'WARNING': '[WARNING]',
            'ERROR': '[ERROR]'
        }
        timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        log_message = f"{timestamp} {prefix[level]} {self.name}: {message}"
        print(log_message)
        self._write_to_file(log_message)

    def _write_to_file(self, message):
        """
        将日志消息写入文件。

        :param message: 日志消息
        """
        with open(self.log_file, 'a', encoding='utf-8') as f:
            f.write(message + '\n')

# 示例使用
if __name__ == "__main__":
    logger = Logger("MyApp")
    logger.info("这是一个信息日志")
    logger.warning("这是一个警告日志")
    logger.error("这是一个错误日志")
